前面两周一直在跟icinga2进行较劲,花了2天看了下文档,并进行测试。

国内看到的文章其实都是一个单机版本的安装,没有涉及到远程客户端的。而实际测试发现这步还是比较复杂的。

 

首先需要是在服务器端生成客户端的唯一码

icinga2 pki ticket --cn ebs-aaa-beijing-test-agent

然后client再根据server产生的这个码进行认证


mkdir /etc/icinga2/pki && chown -R icinga.icinga /etc/icinga2/pki

icinga2 pki new-cert --cn ebs-aaa-beijing-test-agent --key /etc/icinga2/pki/ebs-aaa-beijing-test-agent.key --cert /etc/icinga2/pki/ebs-aaa-beijing-test-agent.crt

icinga2 pki save-cert --key /etc/icinga2/pki/ebs-aaa-beijing-test-agent.key --cert /etc/icinga2/pki/ebs-aaa-beijing-test-agent.crt --trustedcert /etc/icinga2/pki/trusted-master.crt --host ebs-aaa-beijing-monitor

icinga2 pki request --host ebs-aaa-beijing-monitor --port 5665 --ticket 13aa0b00b14ed45890984827ebfff0747a55449a --key /etc/icinga2/pki/ebs-aaa-beijing-test-agent.key --cert /etc/icinga2/pki/ebs-aaa-beijing-test-agent.crt --trustedcert /etc/icinga2/pki/trusted-master.crt --ca /etc/icinga2/pki/ca.crt

icinga2 node setup --ticket 13aa0b00b14ed45890984827ebfff0747a55449a --endpoint ebs-aaa-beijing-monitor,ebs-aaa-beijing-monitor,5665 --zone ebs-aaa-beijing-test-agent --master_host ebs-aaa-beijing-monitor --trustedcert /etc/icinga2/pki/trusted-master.crt --accept-config --accept-commands

而要用好icinga2,那就首先要理解,host, node, endpoint, zones, repository 这几个定义的区别。

但是个人感觉这些优点复杂了。

测试下来最有用的部分是对于hostgroups和servicegroups在icinga2里自定义就太方便了。这个可比nagios大大进步了,nagios里还得跟傻逼一样一个个写,虽然可以写脚本搞定,但是还是感觉很傻。


object HostGroup "mysql-server" {
display_name = "MySQL Server"

assign where match("*mysql*", host.name) && match("db-*", host.vars.prod_mysql_db)
ignore where host.vars.test_server == true
ignore where match("*internal", host.name)
}

还有一个功能是icinga2对于历史报警数据的追溯,由于写入了db,也不会怕丢失了。
最后一个是远程服务的执行,当然要提前加入sudo权限。


object EventCommand "event_by_ssh_restart_service" {
import "event_by_ssh"

//only restart the daemon if state > 0 (not-ok)
//requires sudo permissions for the icinga user
vars.event_by_ssh_command = "test $service.state_id$ -gt 0 && sudo /etc/init.d/$event_by_ssh_service$ restart"
}

其实这个也是通过by ssh来着的,这个其实nagios也可以完成。

最后一个最最重要的是icinga2可以做cluster,还可以跨机房的做cluster。但是那样的后果是在client认证的时候就更复杂了。其实为什么不做成zabbix proxy这样的东西。这也就怪不得这个东西大家用的少了。看了那么多运维的简历没有说有用这个的。

 

Share Your Thought