易陆发现互联网技术论坛

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

openstack控制器安装手工安装monasca

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

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

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

x
monasca的所有组件都可以安装在一个节点上,例如openstack控制器节点上,也可以将其部署在多节点上。本文中,将在我的openstack集群中创建的新VM中安装monasca-api,该VM具有关联的浮动ip。Monasca-agent已安装在控制器节点上。代理节点通过浮动ip将指标发布到api节点。它们在同一子网中。
  • 安装我们需要的软件包和工具
    & R. a( m& m7 N1 [4 B1 @apt-get install -y git
    7 b6 ^& {* C. d% Z5 C' _/ Bapt-get install openjdk-7-jre-headless python-pip python-dev
  • 安装mysql数据库 如果您在openstack控制器节点中安装了monasca-api,则可以跳过安装,将已安装的msyql用于openstack服务。& W4 _7 @* o  }  C
    apt-get install -y mysql-server
    / Y4 e) W/ P. }5 A' I' N- C" _3 j创建monasca数据库架构,在此处下载mon.sql( https://raw.githubusercontent.com/stackforge/cookbook-monasca-schema/master/files/default/mysql/mon.sql
    , C% K+ h+ P1 h: k1 Z- K9 }. j$ Q1 Smysql -uroot -ppassword < mon_mysql.sql
  • 安装Zookeeper 安装Zookeeper并重新启动它。我使用本地主机接口,并且只有一个Zookeeper,因此默认配置文件不需要配置。$ N+ t, m( i3 O/ t+ V
  apt-get install -y zookeeper zookeeperd zookeeper-bin  service zookeeper restart( n0 u# h( S9 a+ _
  • 安装和配置kafka( w7 i9 |5 H6 M3 |+ `( O
    wget http://apache.mirrors.tds.net/kafka/0.8.1.1/kafka_2.9.2-0.8.1.1.tgz, H8 Y9 p1 C& q! [4 F
    mv kafka_2.9.2-0.8.1.1.tgz /opt# w/ n0 S7 X9 O8 r9 u( @
    cd /opt
    + ^" i$ V* k3 _' A) u( \+ Utar zxf kafka_2.9.2-0.8.1.1.tgz
    " M* |- j( e: S" o" j- \- Yln -s /opt/kafka_2.9.2-0.8.1.1/ /opt/kafka. q/ f% {0 u7 n
    ln -s /opt/kafka/config /etc/kafka- P0 D' ?8 f3 l' A
    创建kafka系统用户,kafka服务将以该用户身份启动。
    ! j" i9 P4 K  T6 ]% W' Guseradd kafka -U -r
    ; O' q' k5 x5 ~在/etc/init/kafka.conf中创建kafka启动脚本,将以下内容复制 到/etc/init/kafka.conf中并保存。
    ; i7 V& m. E0 Z0 N* Ldescription "Kafka"
    . J% {2 _7 ]$ t+ l
    ; ]4 i& r! k% Q( W8 `) S$ {2 astart on runlevel [2345]" c" ]! H0 x6 H2 v) g4 D
    stop on runlevel [!2345]
    . g6 I* J8 @3 Z( F+ c# Z* @" k
    3 e# p: u' }' d, S) ~7 A' irespawn/ i* ^, g: i; _/ E( ?) x% j

    7 E  b( p( E. Tlimit nofile 32768 327685 {! {! U# i1 [. ?& q4 o' z

    9 T1 r  y, I; i' w( y0 S# If zookeeper is running on this box also give it time to start up properly! E, h& K$ C% N( F9 k& H3 ^
    pre-start script7 o- }5 E( u" T
    if [ -e /etc/init.d/zookeeper ]; then) M3 D! a3 l, y
    /etc/init.d/zookeeper restart1 j; R8 |; t- G' U
    fi
    / f3 j0 f4 ~# s: O) j" @: Tend script
    + ]5 r. g" h  E# b* z  ~% e4 B7 [/ w1 n" O1 t/ \
    # Rather than using setuid/setgid sudo is used because the pre-start task must run as root
    * f/ D7 D4 q% y# k8 dexec sudo -Hu kafka -g kafka KAFKA_HEAP_OPTS="-Xmx1G -Xms1G" JMX_PORT=9997 /opt/kafka/bin/kafka-server-start.sh /etc/kafka/server.properties- V& |. C4 c. x; q) N
    配置kafka,vim /etc/kafka/server.properties,确保配置了以下内容:
    % e3 _! x4 T9 b) \( W* \) Thost.name=localhost1 ^3 G4 x/ H" D
    advertised.host.name=localhost
    / O  o, ~1 b* }  V: ~% R& Wlog.dirs=/var/kafka
    . ~# T1 F1 M, i4 X创建 kafka log目录
    3 u1 G4 R3 z- }% Hmkdir /var/kafka7 k1 L! b4 F+ b, N
    mkdir /var/log/kafka( X. B5 f5 f" a8 |) ]
    chown -R kafka. /var/kafka/( j4 U/ H' j! e2 E) I+ F
    chown -R kafka. /var/log/kafka/# T9 c: T+ W  C2 E  A) q; E5 M+ W
    启动kafka服务2 O7 l+ ?& N" q* s5 v! `: f
    service kafka start/ }+ @% W+ s3 I" j" S& `$ e
    下一步就是创建 kafka topics$ G/ e  a6 ?8 M; N7 H6 p( G
    /opt/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 64 --topic metrics7 G- x0 j* @8 Q. L9 p
    /opt/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 12 --topic events& h' x: L5 N1 N- P0 {& N
    /opt/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 12 --topic raw-events
    8 A3 c: f4 P" L$ k  T  D/opt/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 12 --topic transformed-events
    " B$ u2 y5 I' A; h/opt/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 12 --topic stream-definitions
    4 m$ U2 R/ c8 h2 P7 O/opt/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 12 --topic transform-definitions
    / m% {+ t( j+ d/opt/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 12 --topic alarm-state-transitions
    ! A. {1 ?% ~' {  N" ^: \1 ^/opt/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 12 --topic alarm-notifications9 s" E: u5 ^% P7 c+ r  v) g7 E# ]
    /opt/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 12 --topic stream-notifications
    # ~) L/ T! `8 A; I8 y# q& o/opt/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 3 --topic retry-notifications
  • 安装和配置 influxdb+ k( l+ b3 L: a6 l
    curl -sL https://repos.influxdata.com/influxdb.key | apt-key add -
    + a5 i+ z, Y% d, techo "deb https://repos.influxdata.com/ubuntu trusty stable" > /etc/apt/sources.list.d/influxdb.list
    ; h* K. r9 G; g& }, O7 Fapt-get update
    % m- l% w7 E# i9 y2 x! L+ }apt-get install -y apt-transport-https
    0 T0 G6 n5 [* z; f) l- X0 Uapt-get install -y influxdb
    ( D) F' U3 l7 K/ S/ x4 k2 h
    % u" ^( M7 B2 X8 mservice influxdb start
    5 {. F8 H! @' y7 P创建 influxdb database, user, password, retention policy, 同时修改密码。% {3 W) t" a- p. A
    influx
    # V9 W  ^$ [+ k8 [CREATE DATABASE mon
    % F% P5 ]4 T. U9 K- O# jCREATE USER monasca WITH PASSWORD 'tyun'  m# T6 g0 t5 S% a6 e% ^
    CREATE RETENTION POLICY persister_all ON mon DURATION 90d REPLICATION 1 DEFAULT
    + h1 v1 ]7 O, R/ {2 l" ?6 hexit
  • 安装与配置 storm
    ; m/ Z; g7 K9 dwget http://apache.mirrors.tds.net/storm/apache-storm-0.9.6/apache-storm-0.9.6.tar.gz3 I5 C! [7 t) Z  H) M
    mkdir /opt/storm
    4 F: B) G/ h* Z7 n# fcp apache-storm-0.9.6.tar.gz /opt/storm/
    + A3 a, C' |1 B  Lcd /opt/storm/3 j8 U2 O% O( V1 b# p9 u) v
    tar xzf apache-storm-0.9.6.tar.gz  Y3 k( o) |! L' Y( Q  q
    ln -s /opt/storm/apache-storm-0.9.6 /opt/storm/current' w1 D$ z; t( @* H) |$ a

      ~. V+ |  x( H9 Museradd storm -U -r
    $ V$ Z7 M  b! ]mkdir /var/storm
    ; d3 z: m/ _" B6 R' Y) S3 Imkdir /var/log/storm8 T/ R4 D. X. R) o) T* G, }
    chown -R storm. /var/storm/
    8 p( w' j- }5 \8 b* |+ M  kchown -R storm. /var/log/storm/7 d- m  [+ ]: |5 v0 {/ g
    修改storm.yaml, vim current/storm/conf/storm.yaml
    3 ]6 T/ b" S4 f" t1 N### base' Z( i1 l  h  E/ g  y1 n- A
    java.library.path: "/usr/local/lib:/opt/local/lib:/usr/lib"
    ' B+ L& Q8 U4 [. x! Z4 Ostorm.local.dir: "/var/storm"
    + o+ I! u$ g1 W# h' G
    ! c1 J0 j9 T$ C2 _& H; k8 A### zookeeper.*: P: r$ P1 K& x- K5 ~0 S# a2 z
    storm.zookeeper.servers:; k: Z: [# c# o* ^1 X
    - "localhost"
    2 G+ I+ b6 @) Tstorm.zookeeper.port: 2181
    % X5 k& M2 S9 X4 Q/ O$ e: R/ ostorm.zookeeper.retry.interval: 5000
    0 d. |; l) v# r& Ostorm.zookeeper.retry.times: 292 L; s" |+ W' e; {
    storm.zookeeper.root: "/storm"& F  V7 x& y! a2 u. a
    storm.zookeeper.session.timeout: 30000; ?9 B/ O1 j9 u. d

    6 n- q; g- j: R0 V" X1 X/ O9 t### supervisor.* configs are for node supervisors
    $ H: `' U( t& M: H* s: esupervisor.slots.ports:& @0 `5 I" m( S1 }0 U0 g( B/ U
    - 67017 Z! g3 D+ d* Q3 }# D
    - 67029 f# l% @! E9 q
    - 6703# j4 J# f8 v& m7 ]2 C
    - 6704
    3 Z7 ?& Y! B. J8 S+ y% `' |. W/ X3 vsupervisor.childopts: "-Xmx1024m"
    3 W* t* L1 M7 e+ S+ {
    3 b1 D" Y. e$ A! e9 n. K0 Q+ j### worker.* configs are for task workers
    ) d# b8 y# U5 E& Q" Mworker.childopts: "-Xmx1280m -XX:+UseConcMarkSweepGC -Dcom.sun.management.jmxremote"
    ! q# H* R; H" s0 `! U3 ~% D9 p& m5 m  x
    ### nimbus.* configs are for the masteri
    & ~: P" A; Y: tnimbus.host: "localhost", D+ x8 x( C& Z3 o3 |
    nimbus.thrift.port: 6627
    : ]! K2 W3 w( @  Nmbus.childopts: "-Xmx1024m"
    # [+ {8 y- A, y' b' [; E& S1 o& B1 I& a3 W9 o' u: O8 G
    ### ui.* configs are for the master) @) Z' q4 O% x% f  y
    ui.host: 127.0.0.1
    / K8 i% M2 E& d) l$ ~( P# }* j: M* gui.port: 8078( h* l# Q' @2 D/ t. [: I2 [0 ~
    ui.childopts: "-Xmx768m"* j$ e0 x! z% p( P% d% z, z

    & y" m7 L9 F$ `; k4 G5 D### drpc.* configs" i& n! d6 y6 U2 @0 r

    * a2 Q5 e. E/ q' C1 e( V! N7 E### transactional.* configs
    ! u4 U; s/ _+ c9 X2 C+ J( v5 Ntransactional.zookeeper.servers:% E3 G1 w7 `% E: @
    - "localhost"3 ]8 u5 C% K- x! y4 g! p7 p: P
    transactional.zookeeper.port: 2181
    - W8 J" T4 e2 k& `) [1 L9 V- Ftransactional.zookeeper.root: "/storm-transactional"
    . r$ S5 m% I2 V- A- D3 i3 l
    * m/ J9 \3 b; l) b# m### topology.* configs are for specific executing storms$ `+ z/ M9 Y6 y. Z0 l
    topology.acker.executors: 1
    ; B& b" d1 Y4 W; G; R& n8 Qtopology.debug: false
    ! E! p4 k" E5 _- V! D! N$ s5 Q# A1 L. k! T) M/ e3 y/ L
    logviewer.port: 8077
    0 h$ w7 J1 _$ J0 Zlogviewer.childopts: "-Xmx128m". F0 b5 A7 J, w' E5 d  h
    创建storm supervisor 启动脚本,vim /etc/init/storm-supervisor.conf. }" ~8 E( U! f) h2 j9 c
    # Startup script for Storm Supervisor( v4 g; O$ K. ~+ H2 N

    4 G2 `" r: z) u/ ]0 h; B. }& rdescription "Storm Supervisor daemon"+ D0 m: L: ~! E+ q, H7 g
    start on runlevel [2345]
      P/ f! L1 N% @4 B3 s; s/ l" J3 B
    console log
    ' t1 ]5 ~6 a: P$ Lrespawn
    / ]& \* |3 |2 Y5 A# D. p. Y( D. [5 F" a5 G5 _4 v1 H
    kill timeout 240
    $ A" a9 B2 a" |- k$ _! lrespawn limit 25 5
    / b, \4 ^" Z' m
    . X& O. ~" q% N" p  Nsetgid storm% D; p- l. R2 K# [1 H7 R
    setuid storm
    : r& _/ J$ R8 w2 Hchdir /opt/storm/current* M4 P( g4 A* N
    exec /opt/storm/current/bin/storm supervisor- r0 E0 R3 F0 K; f' m* |: Q
    创建Storm nimbus 启动脚本。vim /etc/init/storm-nimbus.conf
    5 r' }3 ^9 r$ \9 g4 X0 }# Startup script for Storm Nimbus- m$ O* D4 e7 a, Z3 Y7 O2 G

    5 [* ~" r% I1 D' y6 z, c" wdescription "Storm Nimbus daemon"/ }1 ~6 p' {$ r0 @; i' Q# b
    start on runlevel [2345]8 b1 n6 w' C1 J2 G! P

    ; ?1 K+ a& J8 v2 V2 X' I2 h0 hconsole log5 ^# [3 X$ h# @, @9 m& k& [
    respawn! p- g! g+ E& O3 w2 ?+ I7 W  H

    # b3 P" F: Q- W9 pkill timeout 240& u- A! X/ I9 a0 q: v3 g. H
    respawn limit 25 56 k+ V, r0 ?* i. a2 H1 F" ^
    " s: o! i' P8 c5 e: Q
    setgid storm8 A% F1 ?8 f% e) J0 J" J! i. r  w% k
    setuid storm
    7 o$ y' f: @7 P$ a3 y/ n! hchdir /opt/storm/current
    # z; g! q1 ]/ e+ {exec /opt/storm/current/bin/storm nimbus+ ]) [5 Y) s/ \1 Z! U
    启动supervisor 与 nimbus
    4 \0 W; e4 ]9 vservice storm-supervisor start& Y, h- [0 l/ W
    service storm-nimbus start
  • 安装monasca api python软件包  `9 w- q* d/ w
    一些monasca组件同时提供python和java代码,主要是我选择python代码进行部署。  k' y, r0 k, Z. D$ e8 O+ Z
    pip install monasca-common5 t2 \- o) E( }9 o' W/ [
    pip install gunicorn% T2 @$ f$ g# r9 _
    pip install greenlet # Required for both5 Z+ ?& g5 [! j& H# E/ a: F
    pip install eventlet # For eventlet workers7 F. H  V! S# Q7 x
    pip install gevent # For gevent workers
    3 N$ S( K6 C7 ^3 j9 S) w3 T& k; [6 ]+ _pip install monasca-api
    - V: K2 l8 R- h/ G  Z- m# Xpip install influxdb
    9 z( S+ f8 w4 gvim /etc/monasca/api-config.ini,将主机修改为您的IP地址" ]1 M" {5 J  q% \
    [DEFAULT]
    * p6 y! M. v0 M5 [name = monasca_api: n: e' R$ y0 |! z* L
    7 X$ P" E5 {2 L2 B2 r
    [pipeline:main]3 }& }6 F4 h/ W  e! M6 X' F5 A. G
    # Add validator in the pipeline so the metrics messages can be validated.
    % Y/ ^9 @" e+ d; V# {' upipeline = auth keystonecontext api
    ! W$ m& F  u7 @9 a% M
    ' ~( |3 q& ^! ?+ ~2 A[app:api]% h% `/ A! w9 `3 M' @
    paste.app_factory = monasca_api.api.server:launch+ j' E9 m0 x# c+ q

    ( `- g( r/ K6 J# G% i[filter:auth]
    7 _1 C# F1 ]  G( r% Kpaste.filter_factory = keystonemiddleware.auth_token:filter_factory
    6 `! m1 O) U" v4 k: W; \: h* g$ Q/ u
    - f- f) m+ x! f1 N) Q[filter:keystonecontext]6 d1 v) ~7 S3 M9 o- g* e4 f% R
    paste.filter_factory = monasca_api.middleware.keystone_context_filter:filter_factory
    8 l. |7 g" I9 V8 e1 R. M# ?( \6 b- ~/ z2 N6 _, X3 C/ n" B, X$ J
    [server:main]8 J( `( r( b+ _! n- i8 y* X
    use = egg:gunicorn#main( Y; I- ^* W9 I/ v
    host = 192.168.2.23& n9 q, C4 w: T, w) ~- q' N
    port = 8082" q1 A1 ?1 k3 Q8 \- f! x+ L
    workers = 1
    ' H, J3 a9 x: I. gproc_name = monasca_api
    - s' @; D7 J  J/ a8 _vim /etc/monasca/api-config.conf,修改以下内容$ F( ~) q) E$ M$ ^# \. L
    [DEFAULT]  R1 R7 n. |7 T  v% ^! A
    # logging, make sure that the user under whom the server runs has permission; ?7 y2 d/ W% F# l$ e: y# j. |
    # to write to the directory.5 x/ G( \& V7 J
    log_file = monasca-api.log
    7 i4 d- {9 V- Y4 X) {0 Ilog_dir = /var/log/monasca/api/
    ; R6 Q2 x3 s  Jdebug=False
    ; h& D2 e8 h. a* h2 f3 nregion = RegionOne
    0 x2 L  b) X. o9 k; x; H[security]
    : a" w9 T4 W" t# The roles that are allowed full access to the API.; d& u% }! E$ Y5 n7 _
    default_authorized_roles = admin, user, domainuser, domainadmin, monasca-user+ ]6 K7 }5 q# z% i$ ]. H6 @

      k; K) X/ _) M% k3 u& t# The roles that are allowed to only POST metrics to the API. This role would be used by the Monasca Agent.. s+ r( A* e& @! J
    agent_authorized_roles = admin0 m2 I5 a/ n9 z( i9 i3 S
    " _: q6 F  L" C  x! Z& ]
    # The roles that are allowed to only GET metrics from the API.0 Q: g6 x1 |9 a5 }
    read_only_authorized_roles = admin& l/ j6 y9 ?; J5 H
    - A1 [  b4 d, ?: y# x3 m" _
    # The roles that are allowed to access the API on behalf of another tenant.- b* @! \$ S' `
    # For example, a service can POST metrics to another tenant if they are a member of the "delegate" role.
    + s8 {4 l3 ^8 I2 xdelegate_authorized_roles = admin
    : u7 l# a6 x# c: _7 W
    % A, }, d; O; H5 b9 Q. R/ r) ~+ k[kafka]
    & Z( Z6 N  _) a# The endpoint to the kafka server. L& O5 N$ i6 ~( S7 v# f
    uri = localhost:9092
    & ]; I0 v; b5 G1 c5 \2 n6 m( m; b! J. m4 Z% f
    [influxdb]
    , t. u. `0 E, f# Only needed if Influxdb database is used for backend.
    9 t! c& p, \* k* z; K' r5 K  @' i# The IP address of the InfluxDB service.
    2 s9 \8 G* r4 K2 }, K- rip_address = localhost& ~1 `1 j& u* N# f5 v9 @

    8 j: D1 A& O# W- K3 u# The port number that the InfluxDB service is listening on.
    % A8 s: L9 H" ~8 j: hport = 8086
    0 c: X# k( S1 |( i  U! p% P4 E' x7 |' p4 E  s/ K. ]) [$ F, |( V" A4 Z# `
    # The username to authenticate with.
    ; m6 A* N( T: V4 {, iuser = monasca6 P5 L( d( a% z; Q! ]9 Y
    5 l: m4 G6 R5 I- f0 H: U* ~
    # The password to authenticate with.+ I" z& Q* R/ U
    password = tyun* L# m* k6 s* M+ }
    % [! ^0 d* a! h! k( o- V
    # The name of the InfluxDB database to use.
    6 p- v' Q# R/ a3 H% |database_name = mon7 Y; A: I  m  S/ M6 J

    , t' n' [+ [; h6 \* v[database]+ s: R5 K$ {( z# J0 L% i6 p& W
    url = "mysql+pymysql://monasca:tyun@127.0.0.1/mon"
    * H8 X. O& Z8 M
    4 I4 t) X, q6 y" w# U, q9 f! J9 J6 D7 t
    [keystone_authtoken], F) j5 N) U6 {# \! K. B
    identity_uri = http://192.168.1.11:353570 w: }6 _- Y6 |4 u$ g5 x
    auth_uri = http://192.168.1.11:5000
    & B$ m/ |2 R# Z! @+ H! @5 s  _& Wadmin_password = tyun
    4 L* ~3 f* p- j! H1 Aadmin_user = monasca/ r, o! ^- E3 X1 Y2 R4 O
    admin_tenant_name = service
    ( L6 X7 |: _( W7 S" D. [9 Hcafile =
    9 Q' Y0 x) s& N* a9 h6 S8 Acertfile =) e8 i3 l& n+ Z
    keyfile =) w+ l' s4 z2 }, w: Z2 f4 v% I6 ~8 G
    insecure = false  j# y3 F/ J8 c
    注释掉[mysql]部分,其他部分保持默认。/ X# Q+ c5 i0 `# m6 Q
    创建monasca系统用户并进入目录7 x  U" W4 N' N; m& U
    useradd monasca -U -r9 x* `0 O# f: S" e( Z) @
    mkdir /var/log/monasca- Y6 D; e; ]7 l4 _1 d4 F
    mkdir /var/log/monasca/api* }2 @0 u9 N" C" m
    chown -R monasca. /var/log/monasca/2 L" Q" y  J+ v) L
    在openstack控制器节点上,创建monasca用户密码,为租户服务中的用户monasca分配管理员角色。2 X1 x$ J1 U1 F8 k/ u
    openstack user create --domain default --password tyun monasca( P; v* l& M& I, W& S: Y& H
    openstack role add --project service --user monasca admin" K+ }0 x2 H, Q8 [' c1 g
    7 _% q: c, p* y; q" Y- K
    openstack service create --name monasca --description "Monasca monitoring service" monitoring
    * Q) V. N7 T  f9 e' O8 e* K5 e
    ( h/ f( G% t' N3 \9 O  |create endpoint8 |) F& D, f( `2 M( N
    openstack endpoint create --region RegionOne monasca public http://192.168.1.143:8082/v2.0
    0 A4 a6 {6 ^3 h0 Hopenstack endpoint create --region RegionOne monasca internal http://192.168.1.143:8082/v2.0
    . z; @5 I. S2 G$ J1 Hopenstack endpoint create --region RegionOne monasca admin http://192.168.1.143:8082/v2.0
    / k% `# n3 P0 ?9 N; T( C8 E; ^2 W: r3 ?192.168.1.143是我的api虚拟机地址的浮动IP,请将其更改为您的IP。
    & E8 v9 X5 r) C/ w9 H/ [- H, D; e创建monasca api启动脚本,vim /etc/init/monasca-api.conf
    4 B" S  H$ V) @# p1 A$ Y" H, R# Startup script for the Monasca API
    2 i- v3 s. j8 o" e3 }- ^7 f
    5 g" y4 i. H! U, [1 ydescription "Monasca API Python app"$ Q, k; Y7 C& W' `: w/ d2 w+ k
    start on runlevel [2345]  Z; A' R# d: d
      x, e* l9 p3 Z6 d7 D% K/ A
    console log9 }2 x2 k% `5 G9 X7 K, j$ l" e2 y
    respawn. b( c0 C2 [; J
    : ~& y& ]* y, b4 }
    setgid monasca# k9 X- f, G6 B0 S: ?. a
    setuid monasca
    6 @% j* O% S3 {9 Q5 N/ zexec /usr/local/bin/gunicorn -n monasca-api -k eventlet --worker-connections=2000 --backlog=1000 --paste /etc/monasca/api-config.ini
  • 安装monasca-persister
    ' ~9 w. m+ j& P( O1 m8 w- r创建monasca-persister启动脚本
    7 U6 T; Y, z. ]( yvim /etc/init/monasca-persister.conf
    3 t( h: C  a7 A. l0 V5 e# I) @# Startup script for the Monasca Persister
    9 ^( R1 s! M6 t1 r( B6 z
    ' {; M1 k; k* E5 Vdescription "Monasca Persister Python app"* y! o( z( H! h5 e- e, b* k
    start on runlevel [2345]
    + J: H2 e3 N9 }7 c9 Q
      ~' W$ F- T1 f# K* s4 [. P  R+ k* k2 {console log7 \" r; }3 N' _7 F6 y5 N. N
    respawn- Y. a! w' i0 g# n9 k0 k# m- E

    9 C9 u9 T4 A0 l% b+ p1 Z, nsetgid monasca1 j3 q* D0 m3 Z( b' ~8 E0 `
    setuid monasca
    , f0 h. p. y& j0 Yexec /usr/bin/java -Dfile.encoding=UTF-8 -cp /opt/monasca/monasca-persister.jar monasca.persister.PersisterApplication server /etc/monasca/persister-config.yml
    9 s2 ~0 Y+ M- z& x$ @启动monasca-persister
    * r+ a' s1 a/ m: l( ?2 Q4 p4 q* Wservice monasca-persister start
  • 安装monasca-notificatoin
    , i" k$ f$ {: k; e$ k+ Mpip install --upgrade monasca-notification
    - K- J5 j! ?7 mapt-get install sendmail5 i$ Z! R$ F& U! G7 i# x  p* f
    将notification.yaml复制到/etc/monasca/ 创建启动脚本,vim /etc/init/monasca-notification.conf
    / h0 }; |# a# U1 ^4 I' b# Startup script for the monasca_notification
    ( r6 L* h1 I7 x
    7 l. I9 v9 H+ e' n" g2 Y  j8 m5 A6 |description "Monasca Notification daemon"
    : z1 N4 A0 K; X  q! Astart on runlevel [2345]( p2 s6 k8 e3 b4 f# H# H5 q

    ) y6 K2 q' v# ?$ }: U2 K% Sconsole log
    ; ^$ L* o5 a8 S+ ]: J! R2 yrespawn
    + {- y; W! ?0 s8 P1 F8 W# E2 }4 k% Q* M! k! }% {/ q  Q
    setgid monasca) ]! Z4 k4 d4 b$ {! I9 t' M
    setuid monasca  K, z0 Y5 c  l: C5 O# @" Z
    exec /usr/bin/python /usr/local/bin/monasca-notification" @6 z3 u( L+ v* l8 |0 S) F
    启动通知服务
    2 Y; l' R' E  B- x; oservice monasca-notification start
  • 安装monasca-thresh 复制monasca-thresh到/etc/init.d/ 复制monasca-thresh.jar到/opt/monasca-thresh/ 复制thresh-config.yml到/etc/monasca /并修改主机以及数据库信息 启动monasca-thresh
    : W" ]1 B( L7 m  c6 R7 bservice monasca-thresh start
  • 安装monasca-agent
    % r5 C4 c# m( M6 v! `7 [; R4 v在openstack控制器节点上安装monasca-agent,以便它可以监控openstack服务进程。* ^' j( ]+ a1 T& r( z( {" I6 v
    sudo pip install --upgrade monasca-agent
    7 t$ V, t4 A( i4 z4 S. V6 W$ P* H. C设置monasca-agent,将用户域ID和项目域ID更改为默认值。* P9 a# B7 N, V/ C, p: T
    monasca-setup -u monasca -p tyun --user_domain_id e25e0413a70c41449d2ccc2578deb1e4 --project_domain_id e25e0413a70c41449d2ccc2578deb1e4 --user monasca \7 K8 w3 Q; {3 [
    --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
    $ E7 z9 w# O& }+ b加载认证脚本admin-rc.sh,然后运行monasca metric-list。
    5 {- t: F$ ~# E1 x) e

: }- h/ I& T- {: I2 sDevStack安装
运行Monasca DevStack至少需要一台具有10GB RAM的主机。
可在此处找到安装和运行Devstack的说明:
https://docs.openstack.org/devstack/latest/$ @0 X; W+ {* Z5 Z. d$ V
要在DevStack中运行Monasca,请执行以下三个步骤。
  • 克隆DevStack代码库。7 Q& c& g7 h/ g6 _6 {
git clone https://git.openstack.org/openstack-dev/devstack
) ?  P& Z; y1 N0 e' d8 D% t0 |2 D2 m
  • 将以下内容添加到devstack目录根目录中的DevStack local.conf文件中。如果local.conf不存在,则可能需要创建它。
    6 K/ ~3 v# V% H$ n
# 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  W2 `- V1 }) L  D9 |' k
  • 从devstack目录的根目录运行“ ./stack.sh”。4 u- n5 A& W. W7 D
如果要使用最少的OpenStack组件运行Monasca,可以将以下两行添加到local.conf文件中。
disable_all_servicesenable_service rabbit mysql key; l" a7 r- c/ S& a" c" O
如果您还希望安装Tempest测试,请添加 tempest
enable_service rabbit mysql key tempest' F! `) K6 v: o/ t
要启用Horizon和Monasca UI,请添加 horizon
enable_service rabbit mysql key horizon tempest
8 G8 H( n! s. C+ r/ K, n使用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# y4 j, \, y& @. c2 [8 \
    Monasca支持同时使用InfluxDB和Vertica来存储指标和告警状态历史记录。默认情况下,在DevStack环境中启用InfluxDB。
    2 X8 ~7 g4 O: [/ @! uVertica是Hewlett Packard Enterprise的商业数据库。可以下载免费的Community Edition(CE)安装程序,要启用Vertica,请执行以下操作:+ R9 c* P0 o+ `% M' [2 K- I7 P
  • 注册并下载Vertica Debian安装程序https://my.vertica.com/download/vertica/community-edition/,并将其放在您的主目录中。不幸的是,DevStack安装程序没有可以自动使用的URL,因此必须单独下载该URL,并将其放置在安装程序运行时可以找到它的位置。安装程序假定此位置是您的主目录。使用Vagrant时,您的主目录通常将以“ /vagrant_home”挂载在VM内。
  • 修改local.conf中MONASCA_METRICS_DB变量,配置Vertica的支持,如下所示:7 Z1 r# Z+ g1 |) q/ |! N' K8 ?
    MONASCA_METRICS_DB=${MONASCA_METRICS_DB:-vertica}, W3 g+ X: `; Y, N; A& V" W
: X: a$ b( {# {7 A
  • 使用PostgreSQL或MySQL& V6 w" L) O/ Y( Q+ P" Q! I6 k4 e0 ~
    Monasca支持使用PostgreSQL和MySQL,因此该devstack插件也支持。启用postgresql或mysql。: s6 p5 N- I% S* v: L
    要使用MySQL设置环境,请使用:
    6 l$ Q' ]; i! V+ w4 E$ s8 Henable_service mysql
    ; K( [3 ]8 O: w另外,对于PostgreSQL,请使用:* g) e& D! K( C5 G7 X! T
    enable_service postgresql
  • 使用ORM支持: Y8 @! t) M1 t% }  Y# o- ^% p1 F
    ORM支持可以通过MONASCA_DATABASE_USE_ORM变量来控制。但是,如果启用了PostgreSQL(也称为数据库后端),则将强制提供ORM支持
    , ?: Z: M1 n8 M+ f* u1 G9 m5 t( oenable_service postgresql
  • 加强Apache镜像
    / g+ J; r3 c  x: {如果由于某种原因APACHE_MIRROR而无法使用,则可以通过以下方式强制执行:6 W! T/ B8 A( W
    APACHE_MIRROR=http://www-us.apache.org/dist/
  • 使用WSGI5 h' O4 ~7 T0 k' R5 S5 b
    Monasca-api可以使用uwsgi和gunicorn与Apache一起部署。默认情况下,monasca-api在uwsgi下运行。如果您想使用Gunicorn,请确保其中devstack/local.conf包含:7 y3 z' _$ d; t' H1 a' W; u5 B& L
    MONASCA_API_USE_MOD_WSGI=False
    8 n; k& o; X- q# T# E
使用Monasca Dashboard
安装完成Monasca Dashboard Plugin后,可以通过web控制台进行查看以及管理相应的监控与告警。
在操作控制台的“Monitoring”栏,单击“Launch Monitoring Dashboard“,这将打开在管理节点上运行的专用OpenStack Horizon门户。
在该面板中,您可以:
  • 单击OpenStack服务名称,以查看服务告警。
  • 单击服务器名称以查看相关设备的告警。
    6 O" U1 o/ n8 M; ^
监控信息存储在两个数据库中(Vertica/influxdb与mysql)。备份监控数据时,将同时备份两个数据库。看到
  • 监控指标在Vertica中存储7天。
  • 配置设置存储在MySQL中。
  • 如果监控节点上的服务在高负载(例如15个控制网络和200个计算节点)下停止,则消息队列将在大约6个小时内开始清除。
    " {2 Z% a( c% u3 L
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

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

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

QQ|返回首页|Archiver|小黑屋|易陆发现技术论坛 点击这里给我发消息

GMT+8, 2026-4-8 15:22 , Processed in 0.090135 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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