监控¶
介绍¶
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
-
克隆这个Github项目:https://github.com/vegasbrianc/prometheus
-
使用以下命令启动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的配置文件分为三个部分:global,rule_files和scrape_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)。