易陆发现互联网技术论坛

 找回密码
 开始注册
查看: 605|回复: 0
收起左侧

openstack控制器安装手工安装monasca

[复制链接]
发表于 2022-12-20 10:00:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?开始注册

x
monasca的所有组件都可以安装在一个节点上,例如openstack控制器节点上,也可以将其部署在多节点上。本文中,将在我的openstack集群中创建的新VM中安装monasca-api,该VM具有关联的浮动ip。Monasca-agent已安装在控制器节点上。代理节点通过浮动ip将指标发布到api节点。它们在同一子网中。
  • 安装我们需要的软件包和工具
    , i6 U, j4 u/ p% M& I3 Fapt-get install -y git
      i( r: S' P5 ^0 oapt-get install openjdk-7-jre-headless python-pip python-dev
  • 安装mysql数据库 如果您在openstack控制器节点中安装了monasca-api,则可以跳过安装,将已安装的msyql用于openstack服务。! ]; s) [8 d9 j1 D# B0 n8 W- n) `0 o
    apt-get install -y mysql-server
      ~7 g+ U' ], k- j$ G+ \创建monasca数据库架构,在此处下载mon.sql( https://raw.githubusercontent.com/stackforge/cookbook-monasca-schema/master/files/default/mysql/mon.sql- f" {! S  }7 W2 h6 b6 c
    mysql -uroot -ppassword < mon_mysql.sql
  • 安装Zookeeper 安装Zookeeper并重新启动它。我使用本地主机接口,并且只有一个Zookeeper,因此默认配置文件不需要配置。
    5 ^# ]) j+ F# o: b8 E
  apt-get install -y zookeeper zookeeperd zookeeper-bin  service zookeeper restart
7 C& _3 V+ P5 _7 W
  • 安装和配置kafka
    5 d% T# ?: H, v: Y" R1 Mwget http://apache.mirrors.tds.net/kafka/0.8.1.1/kafka_2.9.2-0.8.1.1.tgz
    $ U! j! L5 C3 D$ Q/ \3 m9 Gmv kafka_2.9.2-0.8.1.1.tgz /opt4 U. Q. {5 a# ^; O5 M( j8 z! w5 ]
    cd /opt
    * |4 [6 J4 @5 C& O4 X- ktar zxf kafka_2.9.2-0.8.1.1.tgz( f# ]: k8 Y) E6 {8 s8 F0 t* b7 \( }
    ln -s /opt/kafka_2.9.2-0.8.1.1/ /opt/kafka3 B6 w- @- F( [! Z; p. G! i4 }8 g  \
    ln -s /opt/kafka/config /etc/kafka
    ' Z& M& o# D& h1 }. E7 o% O- n6 ]创建kafka系统用户,kafka服务将以该用户身份启动。9 O7 F0 Q; c- M1 v7 D/ ~
    useradd kafka -U -r& q9 b# q7 c1 ^6 n9 ?) q
    在/etc/init/kafka.conf中创建kafka启动脚本,将以下内容复制 到/etc/init/kafka.conf中并保存。
    - o% Q4 \1 p4 k& Pdescription "Kafka"
    / F0 p% Z7 [& D+ y
    2 ?3 h4 u' j; R1 Ostart on runlevel [2345]9 r% z$ D3 y1 m1 B. c! k+ n
    stop on runlevel [!2345]' _3 R5 }' _" g3 s4 c

    9 C* C4 S5 C4 K6 R; @respawn1 G, }  A" Y9 b9 t# K3 \' j2 I% D# p

    / \; U$ y1 T- f8 k# hlimit nofile 32768 32768
    $ d* R; D* U/ Z. b0 y0 I2 S7 H) m, a" T8 N0 a, ~3 E( {$ i0 T
    # If zookeeper is running on this box also give it time to start up properly
    % O* ^! e. |3 c  h8 ypre-start script
    : w. K& C& X- s9 F3 k; ^) k7 }# zif [ -e /etc/init.d/zookeeper ]; then# f- @9 C! J, a' k  k1 [+ j5 J
    /etc/init.d/zookeeper restart6 ?7 K0 s/ K6 n
    fi8 ?8 R( X6 H" F3 B) z! f1 t0 m
    end script
    ! [. Q, @  r" @+ p2 T; J
    9 J1 J& H: Z* _/ l$ [0 m9 Z! f# Rather than using setuid/setgid sudo is used because the pre-start task must run as root
    : u- [4 U  d/ [, q( r9 aexec sudo -Hu kafka -g kafka KAFKA_HEAP_OPTS="-Xmx1G -Xms1G" JMX_PORT=9997 /opt/kafka/bin/kafka-server-start.sh /etc/kafka/server.properties8 N+ d# L7 X: g
    配置kafka,vim /etc/kafka/server.properties,确保配置了以下内容:& r! L; [! h& R2 {' x, d# e) n
    host.name=localhost/ V2 I( A* l2 r- S9 B! {: l/ _
    advertised.host.name=localhost
    . H& T7 V8 ]" H/ plog.dirs=/var/kafka
    ! V& V! V1 r: D, i0 B0 h9 P- C% I5 l创建 kafka log目录
    1 m% r  I0 f; |7 q; P2 p) D! |; `& z7 rmkdir /var/kafka- v8 {/ r' Y, y/ x  [% _8 q$ ~
    mkdir /var/log/kafka
    2 Y( ]9 Q# T# j$ J% Nchown -R kafka. /var/kafka/
    0 @3 q6 X4 {4 N# G4 N+ mchown -R kafka. /var/log/kafka/
    * B9 K0 |5 k3 g3 E2 W$ O3 u$ o启动kafka服务
    " _# u, ~$ u9 a  x; s0 f+ r" ~/ kservice kafka start
    ( @8 f4 l* |7 S( Y8 D0 }% o下一步就是创建 kafka topics
    " n" L) t; ?6 z! O! a/opt/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 64 --topic metrics
    # F' ^; C! n! c% X; Q# Y/opt/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 12 --topic events1 _( M% i8 a9 @7 C- I1 R
    /opt/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 12 --topic raw-events2 Y) ~$ m" V, P' `& [0 i
    /opt/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 12 --topic transformed-events
    7 u# T7 ^" {& d% b! `/opt/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 12 --topic stream-definitions7 s& }3 \4 P  x8 ^3 a" {$ X3 S
    /opt/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 12 --topic transform-definitions2 E2 O/ a. u$ _% g
    /opt/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 12 --topic alarm-state-transitions
    9 x% C0 d6 x% @4 M5 x+ b/opt/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 12 --topic alarm-notifications9 d" U3 {3 |. t! j( ?0 V3 a
    /opt/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 12 --topic stream-notifications( u9 Q. _8 t: y  l' ]1 _
    /opt/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 3 --topic retry-notifications
  • 安装和配置 influxdb
    ( p5 ]$ B" q1 K7 d; A6 {curl -sL https://repos.influxdata.com/influxdb.key | apt-key add -
    / a5 p, A6 i* x6 uecho "deb https://repos.influxdata.com/ubuntu trusty stable" > /etc/apt/sources.list.d/influxdb.list
    & t, [7 ]% i5 c4 B2 b4 [( }apt-get update# Q* E/ k7 G0 F! k
    apt-get install -y apt-transport-https
    , v2 y4 B& }9 F; x, Bapt-get install -y influxdb
    + k* I5 g! T* V. h/ [' J; Z  O1 y
    % f( `) J: A  n: p0 K9 U: \7 {service influxdb start" n# j8 P* E6 m; c  Y
    创建 influxdb database, user, password, retention policy, 同时修改密码。
    & C; N9 U7 T5 _! Vinflux
    " G! q0 A  X  r7 c' rCREATE DATABASE mon! ^- V6 l! T& x3 i. H4 P
    CREATE USER monasca WITH PASSWORD 'tyun'
    " ^3 G. v5 _9 z, K2 H' pCREATE RETENTION POLICY persister_all ON mon DURATION 90d REPLICATION 1 DEFAULT
    3 b, Y9 a6 s( [# M/ mexit
  • 安装与配置 storm% A$ G/ F3 Y5 a5 M  u
    wget http://apache.mirrors.tds.net/storm/apache-storm-0.9.6/apache-storm-0.9.6.tar.gz
    / G; @1 n, i8 b  d6 omkdir /opt/storm6 g- [/ }0 h1 i6 ^- B+ D1 k7 Y/ R
    cp apache-storm-0.9.6.tar.gz /opt/storm/
    9 S: ~- o; D5 i( d2 icd /opt/storm/
    ' `$ v; i' w/ Ttar xzf apache-storm-0.9.6.tar.gz0 z0 r# p2 b, A9 z; z
    ln -s /opt/storm/apache-storm-0.9.6 /opt/storm/current+ ]" a/ Z/ O; Q! @- k* `0 Z
    % f, g  w, @% E, r+ U7 n
    useradd storm -U -r
    / Z3 G  @) I2 W, T7 e. lmkdir /var/storm- p! I7 l3 |' `6 X; @4 o! w
    mkdir /var/log/storm! Q3 R& D* c) N" Y1 b! L
    chown -R storm. /var/storm/& ]1 w4 `5 V: h+ ?% s
    chown -R storm. /var/log/storm/
    : N! N. i) f' @. [; v" D( d  O1 w修改storm.yaml, vim current/storm/conf/storm.yaml
    ' \8 r+ x; Q" c& E4 o$ X### base5 C3 r5 _9 K! G$ k$ T
    java.library.path: "/usr/local/lib:/opt/local/lib:/usr/lib"2 ^5 j$ t9 S: }  w( T
    storm.local.dir: "/var/storm"3 \0 A& [8 `1 b( S8 d
    ; S! r# R+ A) \; f! Q& B
    ### zookeeper.*
    ' Q) {2 }' ~# `8 @4 Ystorm.zookeeper.servers:' a) [2 P; h$ Y- {" c* L4 p
    - "localhost"
    ! C  q  t- e: Hstorm.zookeeper.port: 2181
    $ w# J  m! L9 X7 B9 nstorm.zookeeper.retry.interval: 5000
    : h3 v# V8 B: m& ]: _7 v5 G8 v+ hstorm.zookeeper.retry.times: 29; ~$ B- q8 p/ X2 A' {2 W# D8 e
    storm.zookeeper.root: "/storm"
    8 M! H+ c/ o/ G, g* ~. B9 U% Mstorm.zookeeper.session.timeout: 30000
    ; N% U0 G/ S/ t4 Z5 [& i  v' t& y$ i% L
    ### supervisor.* configs are for node supervisors
      w: j# |  d1 J0 m1 ]supervisor.slots.ports:
      }" p( M3 X. i- 6701, J* N; W! J' @. v; T% t: W) Z
    - 6702
    & H! o( p2 L: G- O5 |0 K: n! h- 67033 q* _  t$ ]/ A2 ?8 B  Q
    - 6704
    # t% q4 P# f( o* A1 E* zsupervisor.childopts: "-Xmx1024m"
    1 G4 t5 X" B6 h+ H+ @; ^+ C9 O! [
    ### worker.* configs are for task workers
    9 V; ~) p( v& E1 D: h( t$ o: O8 Z" X2 cworker.childopts: "-Xmx1280m -XX:+UseConcMarkSweepGC -Dcom.sun.management.jmxremote"
    ) U1 Q& n% r5 o6 ?; c, O7 S" b* q4 D' p& x! S1 `' b7 G8 a
    ### nimbus.* configs are for the masteri: `/ F' [2 f' L
    nimbus.host: "localhost"
    4 t/ [9 n3 `4 U7 R& [% Dnimbus.thrift.port: 6627- [9 M: ^  w" b! i0 N- L. ]7 J6 x8 s
    mbus.childopts: "-Xmx1024m"
    & ~4 c  y1 O6 [' O  ?3 ?
    7 t; d2 M4 @! D) w( y  A### ui.* configs are for the master* O1 q3 `. Y: |8 W0 b" a. r8 B# g: T
    ui.host: 127.0.0.1
    " s# o4 k% Q- |1 x9 {$ M. Kui.port: 8078  l3 i* [1 C1 I
    ui.childopts: "-Xmx768m"
    ( _, {& j9 l. {0 u8 g: e  L* ?6 q) D3 r) s& P- T4 O! k- X" p+ e
    ### drpc.* configs4 s3 H+ A" a8 }$ u7 D/ V

    1 D2 i* s% m# |1 J3 v, L### transactional.* configs3 E  \0 _0 U% l; D* [
    transactional.zookeeper.servers:
    # g, B5 {2 g" z: B7 J3 ?2 q0 t- "localhost"; |. U, Q1 b$ ~; l+ t
    transactional.zookeeper.port: 2181) A0 W7 O7 ~  [  w: b
    transactional.zookeeper.root: "/storm-transactional"
    4 L& v4 @+ q9 ~7 ?: M1 N  b% e+ s* e0 D
    ### topology.* configs are for specific executing storms
    $ s# h& I0 z# c$ U5 _( r. Ftopology.acker.executors: 1# }1 i; ^* Z: d. {% }
    topology.debug: false. j0 o6 B# q/ N( ?
    " z3 j# O" M1 W4 _: a' u& ~
    logviewer.port: 8077& y1 {' q: {) w: e! J2 S0 p
    logviewer.childopts: "-Xmx128m"
    " {  K* H# ]( I* d/ P创建storm supervisor 启动脚本,vim /etc/init/storm-supervisor.conf
    3 t1 x) j, Z( P5 z# Startup script for Storm Supervisor9 U7 y! p* j6 b  ]

      `+ h! K% s1 @+ ?& Jdescription "Storm Supervisor daemon"
    ' [4 N$ w- q/ s9 B% ^start on runlevel [2345]
    7 z2 h6 {7 W+ Y# |8 C5 ?1 ~; o9 J' H5 y/ V9 E# x% x# S
    console log6 t9 q3 [7 y: S8 b# X
    respawn
    * Z2 _$ u1 e1 E/ n1 H  \
    $ a9 f" R- k* ]3 Z8 f. ^8 M! bkill timeout 2406 C9 `: X" q! i* Y3 w$ k
    respawn limit 25 5" m5 p2 S( M/ Y2 o6 M
    3 P" e$ k7 c1 [3 {' k) O
    setgid storm
    / O$ w( |+ ]; r) tsetuid storm
    3 r; g- L3 [. P+ M) N) e3 kchdir /opt/storm/current0 |2 v# d! x* z( L/ N2 d% A6 l2 F, c
    exec /opt/storm/current/bin/storm supervisor. L7 R2 Y  u$ y0 c# u9 ~
    创建Storm nimbus 启动脚本。vim /etc/init/storm-nimbus.conf- l5 l) X+ N7 @
    # Startup script for Storm Nimbus4 z7 f; Q9 p  f( _" H

    + i( S3 c% B+ o9 H5 K5 T6 c& [description "Storm Nimbus daemon"" C+ }9 `4 ?* h
    start on runlevel [2345]
    ) D. ^6 |5 k& T' b$ q. V. p! Z
    ) t$ T& ?1 n! f; qconsole log# X; P% a2 m; G" ]- E
    respawn9 t- m" d) L- c' n
    + ]/ \! e+ v+ z
    kill timeout 2405 l9 y3 \$ J; n
    respawn limit 25 5
    - s# F; e" ?" F+ V( g4 o7 W; \
    4 \% p3 k7 J: u! k. }1 k% Bsetgid storm
    4 \. ~+ O3 O7 x9 B; A6 c( Rsetuid storm
    1 ^  H2 y3 v1 c% Lchdir /opt/storm/current& Y  ~9 W- g* T, B$ m  }+ E
    exec /opt/storm/current/bin/storm nimbus
    1 |( c; J4 s5 p启动supervisor 与 nimbus
    4 m9 `& k& L8 I8 k+ `service storm-supervisor start* ~' M5 D7 h/ x8 P# l2 @2 a, m9 ~9 T
    service storm-nimbus start
  • 安装monasca api python软件包) C$ x' l4 x. `3 s+ s
    一些monasca组件同时提供python和java代码,主要是我选择python代码进行部署。: W! E" W+ b0 t3 F! |. g; w4 U
    pip install monasca-common
    ! C: b4 U) m% s4 u9 Hpip install gunicorn- @. M8 f4 Z% N
    pip install greenlet # Required for both
    , _3 P4 S0 X  [% Rpip install eventlet # For eventlet workers1 M. Z( ]  L3 }  x0 c( L
    pip install gevent # For gevent workers
    5 T" p# l% Z& f1 B  N5 @; g' Gpip install monasca-api
    ! R0 ?- B( m7 p/ P4 N6 vpip install influxdb0 z: w# D0 \9 p1 u: X
    vim /etc/monasca/api-config.ini,将主机修改为您的IP地址
    1 D2 q. Q" d7 M4 _5 ]7 x2 f[DEFAULT]& _5 v  h- `4 ~: Z/ h2 q) t  Z# z
    name = monasca_api
    * v( ?6 t; \& Z( {
    " O. i( E  x2 H: \' `; t[pipeline:main]# S$ Z3 w" @9 j3 _9 Q7 M
    # Add validator in the pipeline so the metrics messages can be validated.& T5 Y* x: D) H  {" p  S5 T. A
    pipeline = auth keystonecontext api5 d4 w- i1 J; s2 B6 R

    0 z! N6 `( U& r) l( Q- ~- T4 |; A[app:api]
    9 n0 Z+ z/ }2 ]* Wpaste.app_factory = monasca_api.api.server:launch
    ! f, a' }4 i  q; T6 B9 H+ n7 j5 N# D/ f1 D; G3 t6 ^
    [filter:auth]
    : B- {2 b+ F9 F6 u; a2 Fpaste.filter_factory = keystonemiddleware.auth_token:filter_factory
    5 m4 q0 Z3 H& `! Q
    + A6 d. }: B* I2 v% L( f[filter:keystonecontext]7 w& f6 `* l3 K
    paste.filter_factory = monasca_api.middleware.keystone_context_filter:filter_factory2 U$ m% N" O# A) @, n$ Q
    0 c0 j, x) b: k8 I9 O
    [server:main]
    - \1 e3 ]* L) kuse = egg:gunicorn#main
    ; n% F- a, }% W& ~; z! z8 l- ihost = 192.168.2.23
    * B7 @" G5 l- vport = 8082
    7 @  x, ^# Y, o9 E5 |  Kworkers = 1
    * Y. Y6 \' J2 }: j( j1 uproc_name = monasca_api, O1 W$ R% H2 J* o
    vim /etc/monasca/api-config.conf,修改以下内容
    4 c' i8 [6 i$ D3 V6 D[DEFAULT]4 f9 {' d+ M0 T4 O, m/ I: |9 p
    # logging, make sure that the user under whom the server runs has permission
    . N/ ]2 ]8 v7 K$ Z+ f$ k# to write to the directory.: ^& J0 A: Q; }6 Q9 q6 Q& |
    log_file = monasca-api.log
    ) _% Z9 |, {& N" y3 X: w  Xlog_dir = /var/log/monasca/api/
    ) E# M% Q6 V$ T: C/ Kdebug=False3 @0 Y5 @7 J3 W. v. ?  c
    region = RegionOne) }  J" P; N; p$ C6 h$ ]
    [security]5 y4 x4 x$ Z) _4 R
    # The roles that are allowed full access to the API.$ J$ v* l& W$ w1 O- I+ a5 u
    default_authorized_roles = admin, user, domainuser, domainadmin, monasca-user3 t2 B) W' z$ S1 y; w1 e" ?8 c
    * Y& N+ R8 X7 o/ _' M/ L
    # The roles that are allowed to only POST metrics to the API. This role would be used by the Monasca Agent.
    ; p- _8 B2 r% B* @' dagent_authorized_roles = admin& ?. T; G! Z. L: }* R- \4 n

    1 R3 O8 b  P) Q9 C# The roles that are allowed to only GET metrics from the API.
    % {5 g  }; D  Vread_only_authorized_roles = admin
    # c, k% Q$ w9 x
    1 w$ W6 }/ \, |" a( t# The roles that are allowed to access the API on behalf of another tenant.
    9 s7 C- e' i0 i, U" X) p# For example, a service can POST metrics to another tenant if they are a member of the "delegate" role.# {. i$ X) R& L$ R0 p! g3 C' b' P
    delegate_authorized_roles = admin
    6 ]9 Z, ^6 D8 [9 Z# D3 E
      F. {* y$ n  o[kafka]* [& W5 [/ ]% V* |, a% n2 r
    # The endpoint to the kafka server
    . w, v4 J  C8 b8 K0 M; O, c) suri = localhost:9092
    ; S2 t7 V% ?1 W1 i! W1 d
    ! p# y* `& u9 S1 @; |: B# i[influxdb]
    8 G6 P* c# ~2 F* u3 B+ ]# Only needed if Influxdb database is used for backend.
    7 C: [* V( ^  Q& L. t- X2 p6 F/ ~# The IP address of the InfluxDB service.& z8 C* a* v3 s2 l4 m! a
    ip_address = localhost" Y7 ]9 w- @  v

    ( z3 @: g- B+ e6 S) V# The port number that the InfluxDB service is listening on.
    # q# C+ u! x* T: _' B+ aport = 8086
    & {  E6 U' C9 p. t2 j% u
    * ^( W# E8 O/ d8 B  ^# The username to authenticate with.
    % [# z9 J2 ~8 k  K9 P& Buser = monasca
    / L# h7 V: b9 k( V/ d" ?/ u, ^  H# ?- P* v6 ?3 J2 P
    # The password to authenticate with.
      b5 @' Y+ u( }password = tyun
    1 _, T% m' R# D) ^6 i5 X3 B) f/ }0 ~( u9 U" {6 Y; A
    # The name of the InfluxDB database to use.# N8 `4 v0 {! A6 W: K; L3 L5 J+ z
    database_name = mon4 A1 k' e% q; `6 H7 i& f2 b
    3 L: \7 y; j: h
    [database]
    , a1 S9 B' A! C, R3 |url = "mysql+pymysql://monasca:tyun@127.0.0.1/mon"
    8 f* I/ w: _: v$ }
    3 g& G1 n8 N5 Z  m) f1 A) b, `, z" N- _3 P# U& l
    [keystone_authtoken]
    - z9 Z6 p$ }) o- ^identity_uri = http://192.168.1.11:353573 t2 J! P1 F* q7 U4 k9 S+ P
    auth_uri = http://192.168.1.11:5000* y7 Q% _% X* L% S
    admin_password = tyun4 H+ y0 C( ?7 @: X; X
    admin_user = monasca0 l7 J$ `5 r2 d! y% C! n
    admin_tenant_name = service% m/ M: y& Y' S/ x* R, p
    cafile =
    / d0 U( ]* S0 G" ycertfile =
    0 c# _. u% t  u$ ikeyfile =
    / e: ~* \) b+ n" C" ^insecure = false1 M3 F7 d- K& N+ e! S
    注释掉[mysql]部分,其他部分保持默认。
    ( S% g" ^! b- W& G2 m' U创建monasca系统用户并进入目录$ `  m3 x5 k2 B/ S
    useradd monasca -U -r
    ) E) @7 i( w' n0 B5 Rmkdir /var/log/monasca
    : X- K6 d  o( W! x, y1 |) Amkdir /var/log/monasca/api/ ]$ y8 p# C7 F9 @6 `: D
    chown -R monasca. /var/log/monasca/% ~$ A) P, h. s1 ~: s$ ?! S
    在openstack控制器节点上,创建monasca用户密码,为租户服务中的用户monasca分配管理员角色。
    % `" C6 U3 R; L+ F- \4 j/ Topenstack user create --domain default --password tyun monasca' ~% O+ c  v7 H& T
    openstack role add --project service --user monasca admin
    . G# S$ G/ |$ g) {9 m
    " b% i9 G+ l  @: topenstack service create --name monasca --description "Monasca monitoring service" monitoring* p  K- T0 x  B, K

    % c; T6 \0 q" [; H' G; x7 ucreate endpoint
    , V" l. I; Y3 Wopenstack endpoint create --region RegionOne monasca public http://192.168.1.143:8082/v2.0
    9 L8 ?6 Y+ p; B+ Iopenstack endpoint create --region RegionOne monasca internal http://192.168.1.143:8082/v2.0
    . {( D9 t/ g4 j6 s, [: Bopenstack endpoint create --region RegionOne monasca admin http://192.168.1.143:8082/v2.09 Z  B  F! c# Z4 B- |/ G6 h
    192.168.1.143是我的api虚拟机地址的浮动IP,请将其更改为您的IP。
    4 q! q& O& S+ Q! A) ~创建monasca api启动脚本,vim /etc/init/monasca-api.conf
    1 x9 h6 S3 A9 r" H  G8 q# Startup script for the Monasca API
    / g! c+ g' t8 [+ m, l
    " ?9 L/ B& F% A* bdescription "Monasca API Python app"
    # C, z5 u4 {2 c% a9 e; v0 ~. F2 `/ ?start on runlevel [2345]
    : U) I% ?& r/ D/ e& D* a# W& R( n9 v2 C% |
    console log
    + E. e& y- F  m6 G" s6 prespawn1 n6 O5 P8 Q' ?3 M; @
    ! b3 y8 o2 P: s  w1 K; v" H$ b
    setgid monasca( I0 c. _5 Y# j7 C
    setuid monasca& ~) I* ^% Q/ e) H; f# K$ d" g
    exec /usr/local/bin/gunicorn -n monasca-api -k eventlet --worker-connections=2000 --backlog=1000 --paste /etc/monasca/api-config.ini
  • 安装monasca-persister6 ~3 y# D6 i8 k7 `
    创建monasca-persister启动脚本( O7 a0 i3 p; `+ R1 A2 O6 g& v
    vim /etc/init/monasca-persister.conf# F( h1 K) t3 @5 M! ^/ Y6 M$ G
    # Startup script for the Monasca Persister
    & H7 `6 |: f) T" o4 ?+ Y0 Q! Y0 R: }4 C# L5 Z3 ]/ R0 |  Q
    description "Monasca Persister Python app"
    7 C/ h8 `6 k# S6 A7 \, Jstart on runlevel [2345]
    # ^3 J0 [6 x9 E' X2 L, O6 \
    ( z6 @7 \3 v: A( G1 ~console log
    + `; g9 F4 g# \3 K  J, N5 qrespawn5 I+ ^6 O) B6 M4 m
    , a' t1 z1 c( a: P$ V# q0 Z! ~3 \
    setgid monasca
    - ~* T/ V/ v$ v- Z' p) csetuid monasca( Y& v4 F  k% ]9 r- f) Z
    exec /usr/bin/java -Dfile.encoding=UTF-8 -cp /opt/monasca/monasca-persister.jar monasca.persister.PersisterApplication server /etc/monasca/persister-config.yml* ?$ l( x+ u9 j- m  K, \
    启动monasca-persister
    / U7 Q8 s1 c" E  P6 lservice monasca-persister start
  • 安装monasca-notificatoin" K1 Z# D0 k4 D$ e# v$ R& [2 B1 U1 ]
    pip install --upgrade monasca-notification
      W7 X3 }- @! x9 X+ r' _- O. japt-get install sendmail
    , s6 M) F( M+ F& W/ a& Z( G将notification.yaml复制到/etc/monasca/ 创建启动脚本,vim /etc/init/monasca-notification.conf, R' `3 T% A5 V: c6 U5 @
    # Startup script for the monasca_notification
    2 U5 F  B; V' c% z) v9 z; @/ n& ]$ R/ |* _
    description "Monasca Notification daemon"# {' w0 `0 S( T' w% G) v4 `
    start on runlevel [2345]; Q. N# x& r: w2 n

    # J! z. _# k+ V. }6 X, qconsole log6 s+ g5 t0 v8 _' l" V4 A
    respawn* [8 L# K( n: _9 |

    2 v) K0 M5 W5 e( h" M( |  hsetgid monasca
    " ]) g( s! W- Gsetuid monasca$ ]  v# t) w' B* }1 f* W. \
    exec /usr/bin/python /usr/local/bin/monasca-notification; ^5 J3 {+ h" T' W: i
    启动通知服务
    , Y. @  a9 g2 iservice monasca-notification start
  • 安装monasca-thresh 复制monasca-thresh到/etc/init.d/ 复制monasca-thresh.jar到/opt/monasca-thresh/ 复制thresh-config.yml到/etc/monasca /并修改主机以及数据库信息 启动monasca-thresh) R/ `9 A7 }  v' }7 y7 `
    service monasca-thresh start
  • 安装monasca-agent, u/ t' q" H  z/ B+ u6 Q5 G
    在openstack控制器节点上安装monasca-agent,以便它可以监控openstack服务进程。9 i! O# h6 p" j& |" d! d( j' j
    sudo pip install --upgrade monasca-agent
    ( _3 c$ C; }! u9 F设置monasca-agent,将用户域ID和项目域ID更改为默认值。
    6 y3 A) N! O9 [9 Nmonasca-setup -u monasca -p tyun --user_domain_id e25e0413a70c41449d2ccc2578deb1e4 --project_domain_id e25e0413a70c41449d2ccc2578deb1e4 --user monasca \
    - r/ G2 Y2 o( m2 V2 C--project_name service -s monitoring --keystone_url http://192.168.1.11:35357/v3 --monasca_url http://192.168.1.143:8082/v2.0 --config_dir /etc/monasca/agent --log_dir /var/log/monasca/agent --overwrite+ J9 B; _$ x. T
    加载认证脚本admin-rc.sh,然后运行monasca metric-list。
    ' ?8 n6 {- b; Q" _; w

6 H; B4 z. J8 UDevStack安装
运行Monasca DevStack至少需要一台具有10GB RAM的主机。
可在此处找到安装和运行Devstack的说明:
https://docs.openstack.org/devstack/latest/
& z' ?8 T, n: b$ c; |' V
要在DevStack中运行Monasca,请执行以下三个步骤。
  • 克隆DevStack代码库。
    : M3 x8 X* L8 [$ m3 D
git clone https://git.openstack.org/openstack-dev/devstack
7 t9 e7 u5 }* |
  • 将以下内容添加到devstack目录根目录中的DevStack local.conf文件中。如果local.conf不存在,则可能需要创建它。1 q/ R" {( j6 u6 H, D
# BEGIN DEVSTACK LOCAL.CONF CONTENTS​[[local|localrc]]DATABASE_PASSWORD=secretdatabaseRABBIT_PASSWORD=secretrabbitADMIN_PASSWORD=secretadminSERVICE_PASSWORD=secretserviceSERVICE_TOKEN=111222333444​LOGFILE=$DEST/logs/stack.sh.logLOGDIR=$DEST/logsLOG_COLOR=False​# The following two variables allow switching between Java and Python for the implementations# of the Monasca API and the Monasca Persister. If these variables are not set, then the# default is to install the Python implementations of both the Monasca API and the Monasca Persister.​# Uncomment one of the following two lines to choose Java or Python for the Monasca API.MONASCA_API_IMPLEMENTATION_LANG=${MONASCA_API_IMPLEMENTATION_LANG:-java}# MONASCA_API_IMPLEMENTATION_LANG=${MONASCA_API_IMPLEMENTATION_LANG:-python}​# Uncomment of the following two lines to choose Java or Python for the Monasca Pesister.MONASCA_PERSISTER_IMPLEMENTATION_LANG=${MONASCA_PERSISTER_IMPLEMENTATION_LANG:-java}# MONASCA_PERSISTER_IMPLEMENTATION_LANG=${MONASCA_PERSISTER_IMPLEMENTATION_LANG:-python}​# Uncomment one of the following two lines to choose either InfluxDB or Vertica.# default "influxdb" is selected as metric DBMONASCA_METRICS_DB=${MONASCA_METRICS_DB:-influxdb}# MONASCA_METRICS_DB=${MONASCA_METRICS_DB:-vertica}​# This line will enable all of Monasca.enable_plugin monasca-api https://git.openstack.org/openstack/monasca-api​# END DEVSTACK LOCAL.CONF CONTENTS
. ]  W- E0 Y5 f7 y
  • 从devstack目录的根目录运行“ ./stack.sh”。
    % Q" f- }9 M! [2 L8 X* \; w9 L
如果要使用最少的OpenStack组件运行Monasca,可以将以下两行添加到local.conf文件中。
disable_all_servicesenable_service rabbit mysql key
7 M" R6 Z% w' d# e* a
如果您还希望安装Tempest测试,请添加 tempest
enable_service rabbit mysql key tempest
- Q9 k! z* Q4 m4 X  w6 t
要启用Horizon和Monasca UI,请添加 horizon
enable_service rabbit mysql key horizon tempest- H, m1 b& K" ?& X& M
使用Vagrant
Vagrant可用于使用Vagrantfile部署运行有Devstack和Monasca的VM。安装Vagrant后,只需在../monasca-api/devstack目录中运行vagrant up命令。
要在devstack安装中使用本地代码库,请将更改提交到本地存储库的master分支,然后在配置文件中修改与要使用的本地存储库相对应的变量file://my/local/repo/location。要使用monasca-api repo的本地实例,请将更改enable_plugin monasca-api https://git.openstack.org/openstack/monasca-api为enable_plugin monasca-api file://my/repo/is/here。这两个设置仅在重建devstack VM时生效。
  • 使用Vagrant将Vertica启用为Metrics DB
    ! p' f1 f4 o5 p: c9 u8 kMonasca支持同时使用InfluxDB和Vertica来存储指标和告警状态历史记录。默认情况下,在DevStack环境中启用InfluxDB。* y- ?. e5 a7 F
    Vertica是Hewlett Packard Enterprise的商业数据库。可以下载免费的Community Edition(CE)安装程序,要启用Vertica,请执行以下操作:, E  S6 ]0 ]- e% _& e0 z1 t3 e
  • 注册并下载Vertica Debian安装程序https://my.vertica.com/download/vertica/community-edition/,并将其放在您的主目录中。不幸的是,DevStack安装程序没有可以自动使用的URL,因此必须单独下载该URL,并将其放置在安装程序运行时可以找到它的位置。安装程序假定此位置是您的主目录。使用Vagrant时,您的主目录通常将以“ /vagrant_home”挂载在VM内。
  • 修改local.conf中MONASCA_METRICS_DB变量,配置Vertica的支持,如下所示:
    9 l& M9 _# I+ ?7 H( q* tMONASCA_METRICS_DB=${MONASCA_METRICS_DB:-vertica}
    $ A8 w8 t0 H/ O

5 F% s( ^  j* ]1 Q: k# Q
  • 使用PostgreSQL或MySQL
    + H2 E( [  X! A8 u3 w7 ]Monasca支持使用PostgreSQL和MySQL,因此该devstack插件也支持。启用postgresql或mysql。
    , k. d5 C6 v7 w' w2 D' r: p要使用MySQL设置环境,请使用:- ~6 h- K0 y( V# O/ j
    enable_service mysql
    * Y+ T; t9 o- n6 W另外,对于PostgreSQL,请使用:# }4 X; k( ~3 p
    enable_service postgresql
  • 使用ORM支持2 m+ R: ]# G5 _: E
    ORM支持可以通过MONASCA_DATABASE_USE_ORM变量来控制。但是,如果启用了PostgreSQL(也称为数据库后端),则将强制提供ORM支持9 M# O! w0 o) a! S
    enable_service postgresql
  • 加强Apache镜像* N/ C0 {0 V; r9 o. d
    如果由于某种原因APACHE_MIRROR而无法使用,则可以通过以下方式强制执行:' N6 ~2 x" r2 ^) l' `
    APACHE_MIRROR=http://www-us.apache.org/dist/
  • 使用WSGI( @1 ]8 A9 h2 }' R- H9 R, @3 b. J
    Monasca-api可以使用uwsgi和gunicorn与Apache一起部署。默认情况下,monasca-api在uwsgi下运行。如果您想使用Gunicorn,请确保其中devstack/local.conf包含:
    " a- E0 U, c6 f% G/ a% y8 g$ qMONASCA_API_USE_MOD_WSGI=False5 s0 q' w5 d; H% l2 j
使用Monasca Dashboard
安装完成Monasca Dashboard Plugin后,可以通过web控制台进行查看以及管理相应的监控与告警。
在操作控制台的“Monitoring”栏,单击“Launch Monitoring Dashboard“,这将打开在管理节点上运行的专用OpenStack Horizon门户。
在该面板中,您可以:
  • 单击OpenStack服务名称,以查看服务告警。
  • 单击服务器名称以查看相关设备的告警。- [, t+ O$ q: ?
监控信息存储在两个数据库中(Vertica/influxdb与mysql)。备份监控数据时,将同时备份两个数据库。看到
  • 监控指标在Vertica中存储7天。
  • 配置设置存储在MySQL中。
  • 如果监控节点上的服务在高负载(例如15个控制网络和200个计算节点)下停止,则消息队列将在大约6个小时内开始清除。+ R2 z8 c9 O9 H4 o* q. V) G
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

北京云银创陇科技有限公司以云计算运维,代码开发

QQ|返回首页|Archiver|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )点击这里给我发消息

GMT+8, 2026-4-8 23:45 , Processed in 0.060069 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

快速回复 返回顶部 返回列表