跳转至
For the complete DHIS2 documentation index, see llms.txt.

监控

介绍

DHIS2可以导出[Prometheus](https://prometheus.io/)兼容的度量标准,以监视DHIS2节点。

本节介绍了使用标准安装过程(apt-get)和Docker安装Prometheus和[Grafana](https://grafana.com/)以及配置Grafana以显示DHIS2指标所需的步骤。

有关DHIS2实例公开的指标的列表,请参阅[GitHub](https://github.com/dhis2/wow-backend/blob/master/guides/monitoring.md)上的监视指南。

设定

下一节将介绍如何设置Prometheus和Grafana,以及如何设置Prometheus从一个或多个DHIS2实例中提取数据。

在Ubuntu和Debian上安装Prometheus + Grafana

  • 从官方[下载](https://prometheus.io/download/)页面下载Prometheus。

  • 确保针对您的操作系统和CPU架构(Linux和amd64)进行过滤。

  • 确保选择最新的稳定版本,而不是“ rc”版本,因为目前尚不足够稳定。

  • 通过单击链接或使用wget下载档案。

wget https://github.com/prometheus/prometheus/releases/download/v2.15.2/prometheus-2.15.2.linux-amd64.tar.gz
  • 解开拉链
tar xvzf prometheus-2.15.2.linux-amd64.tar.gz

归档文件包含许多重要文件,但这是您需要了解的主要文件。

  • prometheus.yml:Prometheus的配置文件。这是您将要修改的文件,以调整Prometheus服务器,例如,更改抓取间隔或配置自定义警报。
  • Prometheus:Prometheus服务器的二进制文件。这是您要执行的命令,用于在Linux机器上启动Prometheus实例。
  • promtool:这是一个可以运行以验证Prometheus配置的命令。

将Prometheus配置为服务

  • 使用Prometheus组创建一个Prometheus用户。
useradd -rs / bin / false普罗米修斯
  • 将Prometheus二进制文件移到本地bin目录
cd prometheus-2.15.2.linux-amd64 /
cp prometheus promtool / usr / local / bin
chown prometheus:普罗米修斯/ usr / local / bin / prometheus
  • 在Prometheus的/ etc文件夹中创建一个文件夹,并将控制台文件,控制台库和Prometheus配置文件移动到此新创建的文件夹中。
mkdir / etc / prometheus
cp -R控制台/ console_libraries / prometheus.yml / etc / prometheus

在根目录中创建一个数据文件夹,其中包含一个prometheus文件夹。

mkdir -p /data/prometheus
chown -R prometheus:prometheus /data/prometheus /etc/prometheus/*

创建Prometheus服务

要创建Prometheus _systemd_服务,请转到/ lib / systemd / system文件夹并创建一个名为prometheus.service的新systemd文件。

cd / lib / systemd / system
touch prometheus.service
  • 编辑新创建的文件,然后将以下内容粘贴到其中:
[单元]
描述=普罗米修斯
Wants = network-online.target
之后= network-online.target

[服务]
类型=简单
用户= prometheus
组=普罗米修斯
ExecStart = / usr / local / bin / prometheus \
  --config.file = / etc / prometheus / prometheus.yml \
  --storage.tsdb.path =“ / data / prometheus” \
  --web.console.templates = / etc / prometheus / consoles \
  --web.console.libraries = / etc / prometheus / console_libraries \
  --web.listen-address = 0.0.0.0:9090 \
  --web.enable-admin-api

重启=总是

[安装]
WantedBy =多用户目标
  • 保存文件并在启动时启用Prometheus服务
systemctl启用普罗米修斯
systemctl启动方法
  • 测试服务是否正在运行
系统状态法

...
活动:活动(运行中)
  • 现在应该可以通过访问 http://localhost:9090 来访问Prometheus UI。

设置Nginx反向代理

Prometheus本身不支持身份验证或TLS加密。如果必须将Prometheus暴露在本地网络的边界之外,则启用身份验证和TLS加密非常重要。以下步骤显示了如何将Nginx用作反向代理。

  • 安装Nginx(如果尚未安装)
apt更新
apt-get安装nginx

默认情况下,Nginx将开始在默认的http端口80中侦听HTTP请求。

如果机器上已经有一个Nginx实例在运行,并且您不确定它在哪个端口上侦听,请运行以下命令:

> lsof | grep LISTEN | grep nginx

nginx 15792根8u IPv4 1140223421 0t0 TCP *:http(LISTEN)

最后一列显示Nginx使用的端口(http->80)。

默认情况下,Nginx配置位于/ etc / nginx / nginx.conf中。

确保nginx.conf包含虚拟主机配置部分

##
#虚拟主机配置
##

包括/etc/nginx/conf.d/*.conf;
包括/ etc / nginx / sites-enabled / *;
  • / etc / nginx / conf.d中创建一个名为prometheus.conf的新文件
触摸/etc/nginx/conf.d/prometheus.conf
  • 编辑新创建的文件,然后将以下内容粘贴到其中:
服务器{
  听1234;

  位置 / {
    proxy_pass http:// localhost:9090 /;
  }
}
  • 重新启动Nginx并浏览到http:// localhost:1234
systemctl重启nginx

#如果出现启动错误
journalctl -f -u nginx.service
  • 通过编辑/ lib / systemd / system / prometheus.service,将Prometheus配置为反向代理,并将以下参数添加到传递给Prometheus可执行文件的参数列表中。
--web.external-url = https:// localhost:1234
  • 重新启动服务
systemctl守护程序重新加载
systemctl重新启动prometheus


#发生错误时
journalctl -f -u prometheus.service

启用反向代理身份验证

本节说明如何通过反向代理配置基本身份验证。如果您需要其他身份验证机制(SSO等),请检查相关文档。

  • 确保系统上已安装htpasswd
apt-get install apache2-utils
  • 创建认证文件
cd / etc / prometheus
htpasswd -c .credentials管理员

选择一个强密码,并确保正确创建了密码文件。

  • 编辑之前创建的 Nginx 配置文件(/etc/nginx/conf.d/prometheus.conf),并添加身份验证信息。
服务器{
  听1234;

  位置 / {
    auth_basic“ Prometheus”;
    auth_basic_user_file /etc/prometheus/.credentials;
    proxy_pass http:// localhost:9090 /;
  }
}
  • 重新启动Nginx
systemctl重启nginx

#发生错误时
journalctl -f -u nginx.service
  • http://localhost:1234 现在应该提示输入用户名和密码。

在Ubuntu和Debian上安装Grafana

  • 添加一个gpg密钥并从APT回购中安装OSS Grafana软件包
apt-get install -y apt-transport-https

wget -q -O-“ https://packages.grafana.com/gpg.key” | sudo apt键添加-

add-apt-repository“ deb https://packages.grafana.com/oss/deb稳定主程序”

apt-get更新

apt-get install grafana
  • 如果系统使用systemd,则会自动创建一个新的grafana-service。检查systemd文件以获得有关Grafana安装的一些见解
猫/usr/lib/systemd/system/grafana-server.service

该文件非常重要,因为它提供有关新安装的Grafana实例的信息。

该文件显示:

Grafana 服务器二进制文件**位于 /usr/sbin/grafana-server。 定义所有**环境变量**的文件位于/etc/default/grafana-server。 配置文件**通过 CONF_FILE 环境变量给出。 文件的**PID**也由 PID_FILE_DIR环境变量决定。 日志、数据**、插件**和配置**的路径由环境变量提供。

  • 启动服务器
systemctl启动grafana服务器
  • 访问Grafana Web控制台:http:// localhost:3000

Grafana 的默认登录名是 "admin",默认密码也是 "admin"。 首次访问时,系统会提示您更改密码。

  • 将Prometheus配置为Grafana数据源

通过左侧菜单中的配置>数据源,访问数据源面板。

点击添加数据源

在下一个窗口中选择Prometheus数据源。

根据Prometheus设置配置数据源(使用身份验证,TSL等)

使用Docker安装Prometheus + Grafana

本节介绍如何启动包含Prometheus和Grafana的Prometheus堆栈。

配置基于以下项目:https://github.com/vegasbrianc/prometheus

docker stack deploy -c docker-stack.yml舞会

上面的命令,可能会导致以下错误:

此节点不是群集管理器。使用“ docker swarm init”或“ docker swarm join”将此节点连接到swarm并重试

如果发生这种情况,则需要启动Swarm。您可以使用以下命令行:

docker swarm初始化--advertise-addr <YOUR_IP>

一旦该命令成功运行,您就应该能够运行上一个命令而不会出现问题。

该堆栈还包含用于Docker监视的Node导出器。如果您对Docker监控不感兴趣,可以在docker-stack.yml文件中注释掉相关部分:

  • 节点输出器
  • cadvisor

  • 要停止Prometheus堆栈:

docker stack rm舞会

Prometheus配置文件(prometheus.yml)位于prometheus文件夹中。

  • 通过以下网址访问Grafana Web控制台:http:// localhost:3000,用户名:admin和密码:foobar

配置Prometheus从一个或多个DHIS2实例提取指标

在使用Prometheus之前,需要进行基本配置。因此,我们需要创建一个名为prometheus.yml的配置文件。

注意

Prometheus的配置文件是用YAML编写的,严格禁止使用制表符。如果文件格式错误,Prometheus将不会启动。编辑时要小心。

Prometheus的配置文件分为三个部分:globalrule_filesscrape_configs

在全局部分中,我们可以找到Prometheus的常规配置:scrape_interval定义Prometheus刮除目标的频率,evaluation_interval控制软件评估规则的频率。规则用于创建新的时间序列并用于生成警报。

rule_files块包含我们希望Prometheus服务器加载的任何规则的位置信息。

配置文件的最后一块名为scape_configs,其中包含Prometheus监视的资源信息。

一个简单的DHIS2 Prometheus监视文件如下例所示:

``yaml global: scrape_interval: 15s evaluation_interval: 15s

scrape_configs: - job_name: 'dhis2 metrics_path: '/api/metrics' (参数路径) basic_auth: username: admin password: district static_configs: - target:['localhost:80'] ```

全局的scrape_interval设置为15秒,对于大多数用例来说已经足够了。

scrape_configs 部分,我们定义了 DHIS2 输出程序。 basic_auth "块包含访问 "metrics "应用程序接口所需的凭据:请考虑创建一个仅用于访问 "metrics "端点的临时用户。

Prometheus可以与DHIS2在同一服务器上运行,也可以不在同一服务器上运行:在上述配置中,假定Prometheus仅监视一个与Prometheus在同一服务器上运行的DHIS2实例,因此我们使用localhost

配置DHIS2导出器

DHIS2中默认情况下禁用监视子系统。

必须明确启用每个指标群集,以便导出指标。要将DHIS2配置为导出一个或多个指标,请检查此[document](https://github.com/dhis2/wow-backend/blob/master/guides/monitoring.md#dhis2-monitoring-configuration)。