Panko(N版)安装指导#
1.panko简介
ceilometer的目前的架构从官网图上可以看出:
ceilometer从N版本开始将event交于panko来记录管理,meter由gnocchi来管理,ceilometer只负责数据的收集,功能单一性原则,并且本身不再提供api来查询数据,后续api会废掉。
panko组件主要是记录event,提供api供查询event。不过这个组件做的确实有点简单了,只是从ceilometer原本以database方式记录event的代码提取出来,并增加了api查询服务,并没有提供写入event的接口,所以ceilometer将event记录到panko并不是通过api来实现,而是通过代码调用,多少有些紧耦合性,或者说panko并不是完整的功能独立性组件。
2.panko 安装
- pip安装,可以参考官网文档,pip install panko(默认是最新版本)
- 源码安装
- 官网下载源码包解压或者用git clone https://github.com/openstack/panko.git
- cd panko/
- 切换到相应的分支:git checkout -b newton remotes/origin/stable/newton
- pip install -r requirements.txt
- python setup.py install
3.准备数据库以及keystone鉴权
创建数据库
登陆数据库节点,为panko创建数据库。
mysql -u root -p
CREATE DATABASE panko;
GRANT ALL PRIVILEGES ON panko.* TO 'panko'@'localhost' IDENTIFIED BY 'test';
GRANT ALL PRIVILEGES ON panko.* TO 'panko'@'%' IDENTIFIED BY 'test';
创建keystone中的panko用户
openstack user create --domain default --password-prompt panko
给panko用户赋admin角色
openstack role add --project service --user panko admin
创建panko服务
openstack service create --name panko --description --description="Panko Service" event
创建endpoint
注意: 如果需要HA,则需要HAproxy配置 并把这里的Ip在实际环境中替换为haproxy的IP
openstack endpoint create --region RegionOne event public http://192.168.2.203:8777
openstack endpoint create --region RegionOne event internal http://192.168.2.203:777
openstack endpoint create --region RegionOne event admin http://192.168.2.203:777
4.启动
-
配置panko
修改/etc/panko/panko.conf
[database] connection = mysql+pymysql://:@{mariadb_host}}/panko [keystone_authtoken] auth_uri = http://:5000 auth_url = http://:35357 memcached_servers = :11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = panko password = panko
- 初始化数据库
panko-dbsync
-
启动api
-
命令行方式
panko-api –port 8777
其中port是指端口号,这种方式只用于测试,而非正式推荐使用方法,建议用httpd或者usgi来启动。
-
用httpd执行api
根据panko源码中destack/apache-panko.template进行参数的修改,改为环境中的信息即可,其中processes可以执行启动api的进程数。users是指linux系统中的用户,所以也必须提前创建panko这个用户,并将相关文件夹(例如/etc/panko,/var/log/panko等)的权限赋予panko用户。
例如:
Listen 192.168.31.1:8777 <VirtualHost *:8777> WSGIDaemonProcess panko processes=2 threads=1 user=panko display-name=%{GROUP} WSGIProcessGroup panko WSGIScriptAlias / /usr/lib/python2.7/site-packages/panko/api/app.wsgi WSGIApplicationGroup %{GLOBAL} <Directory /usr/lib/python2.7/site-packages/panko/api/> Require all granted </Directory> ErrorLog /var/log/gnocchi/panko_error.log CustomLog /var/log/gnocchi/panko_access.log combined </VirtualHost> WSGISocketPrefix /var/run/httpd
将配置文件放入httpd配置目录(一般位于/etc/httpd/conf.d/),重启httpd服务即可
systemctrl restart httpd
-
-
对接ceilometer
panko并没有提供event的写入api,只能通过以下两种方式:
1、通过publisher配置,调用panko的代码来写入,因此这种方式panko必须和ceilometer安装再同一个环境或者虚环境中。
2、ceilometer直接写入panko的数据库
-
publisher配置(官网推荐)
修改/etc/ceilometer/event_pipeline.yaml文件为
--- sources: - name: event_source events: - "*" sinks: - event_sink sinks: - name: event_sink transformers: publishers: - direct://?dispatcher=panko
至于为什么会调用到panko的代码会处理,是因为如下代码:
self.event_driver = driver.DriverManager( 'ceilometer.dispatcher.event', self.dispatcher_name).driver
stevedore在加载entry_points时会从pip安装软件的目录下(例如/usr/lib/python2.7/site-packages/)查找所有的entry_points.txt,虽然在ceilometer的entry_points并未定义,然而在panko的entry_points中可以找到ceilometer.dispatcher.event这个namespaces下的panko,因此会调用panko中的代码进行写入操作,这也是为什么要安装再同一环境中的原因。
重启ceilometer的notification服务生效
systemctl restart ceilometer-notification.service
-
直接写入panko数据库
修改/etc/ceilometer/ceilometer.conf
[DEFAULT] ... event_dispatchers = database [database] connection = mysql+pymysql://panko:panko@10.127.2.30/panko ...
当然这种方式不能再将meter再放入database
注:这是N版ceilometer的配置,后续dispatcher已经作废,发送方式的配置在publishers中。
-
5.使用pankoclient验证服务
pankoclient安装也比较简单,和panko类似,但是没有和N版panko配套的client,最老的版本panko要求keystone的版本相对较高,没有办法直接在N版中安装使用,所以可以使用虚环境来解决软件依赖的问题。
关于虚环境的使用可参考使用virtualenv解决gnocchi软件依赖。
需要注意的是:
1、安装后pankoclient,并没有panko开头的命令,因为pankoclient安装后,命令是集成到oepnstack命令行中,因此还需要在虚环境中安装python-openstackclient。
2、pankoclient适配版本高于N版,因此对于event查询的某些参数(例如 sort参数),N版的panko并不支持。
在虚环境中安装python-openstackclient、pankoclient后,就可以执行命令查询event了。
openstack event list
如果返回正常并且有数据,则说明panko服务安装配置已经ok。