用Prometheus来监控Apache(使用apache_exporter)

前言

尽管在Prometheus上配置了node_exporter,但服务器并不只有这一个选项。
我们还需要监控正在运行的内容!因此,这次我们将介绍apache_exporter。

在Docker宿主机上执行的命令是#,
在Docker容器中执行的命令是##。
请注意,根据位置不同,文件中的注释可能以#形式进行标记。

我尝试使用jecnua/apache-exporter来启动容器,但似乎无法运行…
所以,我将尝试使用我在本次发布中提到的方法进行监控。

环境

我在Azure上创建的虚拟机(VM)上安装了Docker。具体如下:
– Docker主机:CentOS7.3
– 容器:使用最新的CentOS镜像
– 用于监控的容器:安装了prometheus监控工具
– 监控目标服务器:运行Apache的容器

准备

在运行 Apache 的受监视容器中安装 Go 语言。

<Apache稼働コンテナ>
## yum -y install golang git                  ★ インストール!

## export GOPATH=$HOME/go                     
## export PATH=$PATH:$GOROOT/bin:$GOPATH/bin  

安装apache_exporter。

从GitHub中进行安装。

<Apache稼働コンテナ>
## go get github.com/neezgee/apache_exporter     ★ 何も出力はありません。環境変数GOPATHにインストールされます。
## mv $HOME/go /usr/local/src/.                  ★ これは好き好きです。実施しなくてもいいです。
## ln -fs /usr/local/src/go/bin/apache_exporter /usr/bin   

自动启动设置

让apache_exporter在已启动的Apache容器上启动。

<Apache稼働コンテナ>
## vi /usr/lib/systemd/system/apache_exporter.service
[Unit]
Description=Apache Exporter

[Service]
Type=simple
ExecStart=/usr/local/src/go/bin/apache_exporter
PrivateTmp=false

[Install]
WantedBy=multi-user.target


## systemctl enable apache_exporter.service          ★ 登録!
Created symlink from /etc/systemd/system/multi-user.target.wants/apache_exporter.service to /usr/lib/systemd/system/apache_exporter.service.

## systemctl start apache_exporter

请将警报规则登记。

<prometheus導入コンテナ>
## vi /etc/prometheus/alert.rules       ★ ルールファイルは、それぞれの環境で読み替えてください。
(略)
ALERT httpd_down                        ★ 丸っとコピーして追記ください。
  IF apache_up == 0
  ANNOTATIONS {
    summary = "Apache Daemon {{ $labels.instance }} down",
    description = "Apache Daemon is dead.",                  ★ 文字列は好きな文字列に変更ください。
  }
(略)


## systemctl restart alertmanager      ★ 一応、Alertmanager を再起動

请在Prometheus上进行注册

在Prometheus(服务器端)的监控设置中添加作业。

<prometheus導入コンテナ>
## vi /etc/prometheus/prometheus.yml

(略)
scrape_configs:
  - job_name: 'apache'
    scrape_interval: 5s
    static_configs:
    - targets: ['<Apache導入コンテナのIP or URL>:9117']
(略)

## systemctl restart prometheus         ★ prometheus を再起動

最终

请确保提交(commit)并打开9117端口。

<Apache稼働コンテナ>
## exit

<Apache起動コンテナのDockerホスト>
# docker commit <コンテナ名> <イメージ名>          ★ ちゃんとcommit しておきましょう。
# docker stop <コンテナ名>
# docker rm <コンテナ名>
# docker run --privileged --name <コンテナ名> -dt -v <DockerホストDir>:<コンテナDir> -p 80:80 -p 9117:9117 <イメージ名> /sbin/init

提供的参考网站

广告
将在 10 秒后关闭
bannerAds