目录

Nightingale系列-00-容器部署

概述

笔者是从 nightingale 5.0 的版本开始关注到这个监控系统的,除了项目中提到的监控以外,笔者的团队主要是用 nightingale 替代 AlertManger 的功能。原因很简单,因为 Prometheus 虽然提供了告警规则的配置,但是告警的规则并没有相当好的可视化,不利于增删改查,当时本来是准备自己开发一个的,后面发现社区已经有这么优秀的软件了,就开始关注了。本文是 nightingale 系列的第一篇文章,主要介绍一下部署方面的内容。

Helm Charts

在云原生的趋势下,Prometheus 通过 Helm Charts 部署到 Kubernetes 集群的方案已经是非常成熟了,因此不可避免的,告警系统,或者说替换 AlertManager 的组件,我们首选也是直接部署到容器集群中。在5.0的版本的时候,nightingale 官方还没有提供 Helm Charts 的支持,因此笔者写了一个简单可用的 nightingale-helm,Helm Charts 本身并不复杂,复杂的是如何把组件的部署编排的比较合理,就需要一点功夫了。

可以参考下面的部署命令进行部署,细节主要参考 values.yaml 文件,很多配置,包括告警脚本都是通过 ConfigMap 来挂载到容器的,注意一下逻辑。

  1. 因为nightingale需要依赖MySQL和Redis,所以提供了容器化的数据库来进行部署,数据库的初始化是通过k8s Job来实现的,同时也支持外部存储
  2. 告警需要用到企业微信,告警脚本已经默认加上了代理,如果需要修改代理地址,需要多加一个选项,如 --set notify.proxy=x.x.x.x:3128
  3. 配置企业微信机器人的token,如 --set notify.wecomToken=xxx

容器化存储

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
helm install nightingale \
--namespace n9e --create-namespace \
--set redis.enabled=true \
--set mysql.initDb=true \
--set images.nserver=ulric2019/nightingale:5.4.1 \
--set images.nwebapi=ulric2019/nightingale:5.4.1 \
--set insideMysql.image=mysql:5.7 \
--set insideRedis.image=redis:6.2 \
--set insideMysql.enabled=true \
--set initMysql.enabled=true \
--set insideRedis.enabled=true \
./nightingale

外部存储

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
helm install nightingale \
--set outSideMysql.enabled=true \
--set outSideMysql.Address=mysql:3306 \
--set outSideMysql.User=root \
--set outSideMysql.Pwd=root \
--set initMysql.enabled=true \
--set outSideRedis.Address=redis:6379 \
--set images.nserver=ulric2019/nightingale:5.4.1 \
--set images.nwebapi=ulric2019/nightingale:5.4.1 \
./nightingale

n9e如何访问prometheus

这里的配置主要查看 n9e-configReader 模块中的地址,需要改成与你环境匹配的 url

部署结果

下面是容器化存储的部署结果,可以看到这个 Helm Charts 同时也部署了 MySQL 的 Server 和 Client 以及 Redis。

1
2
3
4
5
6
7
# k get pods
NAME                            READY   STATUS    RESTARTS   AGE
mysql-7bb8d8588b-c5tq2          1/1     Running   0          5h51m
mysql-client-5b9479f4c7-zdqxt   1/1     Running   0          149m
nserver-6dd95fbd8f-wbnmk        1/1     Running   0          149m
nwebapi-76db4bb999-p6slh        1/1     Running   7          5h57m
redis-7fc4bb8cc9-b9d5j          1/1     Running   0          5h57m
/nightingale%E7%B3%BB%E5%88%97-00-%E5%AE%B9%E5%99%A8%E9%83%A8%E7%BD%B2/img.png

总结

通过 nightingale-helm 可以成功的部署出来 n9e,但是因为 n9e 涉及的组件比较多,如果要上生产环境,并且没有太多数据库运维的经验,像数据库的高可用等这些是需要额外考虑的,相关的数据库建议使用云厂商或者公司内部的数据库团队提供的服务。

参考资料

  1. nightingale-helm
警告
本文最后更新于 2017年2月1日,文中内容可能已过时,请谨慎参考。